# -*- coding: utf-8 -*-
# Created by zhangyanqi on 2018/4/15

"""
给定一个数组 nums, 编写一个函数将所有 0 移动到它的末尾，同时保持非零元素的相对顺序。

例如， 定义 nums = [0, 1, 0, 3, 12]，调用函数之后， nums 应为 [1, 3, 12, 0, 0]。

注意事项:

必须在原数组上操作，不要为一个新数组分配额外空间。
尽量减少操作总数。

思路：

"""


class Solution:
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        zero_count = 0
        postion = 0
        postions = []
        for n in nums:
            if n == 0:
                postions.append(postion)
                zero_count += 1
            postion += 1
        for index in reversed(postions):
            nums.pop(index)
        for i in range(0, zero_count):
            nums.append(0)


if __name__ == "__main__":
    s = Solution()
    l = [1, 0, -1, 0, 3]
    s.moveZeroes(l)
    print(l)
